Extending ssd longevity

ABSTRACT

A storage appliance includes a first SSD, a second SSD, and a controller. The controller is able to calculate a first utilization parameter of the first SSD and a second utilization parameter of the second SSD. If the first utilization parameter is less than a threshold and the second utilization parameter exceeds the threshold, the controller identifies a data range stored on the first SSD to be removed. The removal of the data range from the first SSD causes the first utilization parameter to exceed the threshold. The controller then migrates the data range from the first SSD to the second SSD.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation of application Ser. No. 15/667,109,filed Aug. 2, 2017, the entire contents of which are incorporated hereinby reference.

FIELD OF THE INVENTION

The present invention generally relates to systems and methods toincrease longevity of an SSD storage device.

BACKGROUND OF THE INVENTION

Flash-based storage media, such as the memory devices employed insolid-state drives (SSDs), comprise flash cells arranged in units ofplanes, blocks, and pages. Each plane contains a number of blocks, whichare the smallest unit that can be erased. Each block contains a numberof pages, which are the smallest unit that can be written with data.Within an SSD, a memory controller is responsible for mapping thelogical block addresses of application data to be written to or readfrom the physical flash pages.

Storage media disks have a finite lifespan over which they are operable.Hard disk drives (HDDs) are mechanical devices that wear out with use,and may fail unexpectedly and catastrophically. SSDs typically have morethan twice the longevity of HDDs, but differ in how they wear incomparison to HDDs. Due to the characteristics of NAND flash, thelifespan of an SSD is dictated by the number of write operations thatthe NAND flash can endure. Write operations are also known asprogram/erase (P/E) cycles, because data may be written using a programmemory command only after the previous memory contents are removed usingan erase memory command.

Since data may be overwritten only after first erasing previous data ina flash memory, it is common practice to provide extra working space inan SSD which functions as an area of freshly erased flash memory blockswhere new data may be written. This practice is known as OverProvisioning (OP). After new data is written, the previous data ismarked as invalid. Eventually a sufficient number of invalid data pagesare present in a flash memory block for the system to begin a processknown as Garbage Collection (GC). During the GC process, remaining validdata pages are written to freshly erased blocks and the original block,now with all its pages marked as invalid, is erased. The erased blockcan then be included in the pool of freshly erased blocks to which datacan be written. The GC process involves additional data writes, over andabove the original writes for new data. This side effect is known asWrite Amplification (WA), with the WA factor being the ratio of theaverage number of additional NAND flash data writes to the originalwrites. WA causes the lifetime of an SSD to be reduced, by effectivelydividing the P/E cycle limit of the flash device by the WA factor. Forexample, the lifespan of an SSD with a WA factor of 10 will be a tenthof that predicted by the P/E cycle limit.

WA is inversely proportional to OP, where reducing OP has the effect ofincreasing WA. FIG. 1 shows a prior art plot 100 illustrating thecorrelation between the OP and WA. The plot 100 includes an x-axis 102representing OP and a y-axis 104 representing WA. The correlationbetween the OP and WA is represented by the trace 106, having a knee at108. The plot 100 is a well-known model of the correlation of OP and WA.A similar plot modeling the correlation of the OP and WA is shown anddescribed in the article “Write Amplification Analysis in Flash-basedSolid State Drives,” by X-Y Hu et al, IBM Zurich Research Laboratory,SYSTOR 2009, Haifa, Israel, incorporated by reference herein.

It can be seen from the plot 100 that reducing the OP reduces theendurance level of the device as increasing the WA increases the numberof NAND flash writes per application data write and reduces the lifespanof a device which has a specified P/E cycle limit. The relationship isnot linear, with the rate of increase in WA becoming more and moresevere as the OP is reduced below the knee at 108.

The requirement for increased capacity of SSD devices and reduction ofthe OP to mitigate costs leads to a reduced disk lifespan and increasedrisk of early disk failure with severe impacts in cost andusability/access of stored data. Accordingly, there is a long-felt needto correct the problems inherent in present day SSD systems.

BRIEF DESCRIPTION OF THE INVENTION

In an aspect, a storage appliance includes a first SSD, a second SSD,and a controller. The controller is able to calculate a firstutilization parameter of the first SSD and a second utilizationparameter of the second SSD. If the first utilization parameter is lessthan a threshold and the second utilization parameter exceeds thethreshold, the controller identifies a data range stored on the firstSSD to be removed. The removal of the data range from the first SSDcauses the first utilization parameter to exceed the threshold. Thecontroller then migrates the data range from the first SSD to the secondSSD.

In another aspect, a method of balancing the utilization among aplurality of SSDs in a storage appliance includes calculating, at acontroller, a first utilization parameter for at least one first SSD,determining that the first utilization parameter for the at least onefirst SSD is less than a threshold, and selecting a second SSD having asecond utilization parameter which exceeds the threshold. The methodfurther includes determining a data range stored on the first SSD wherethe data range has a utilization level such that with the removal of thedata range from the first SSD the first utilization parameter of thefirst SSD exceeds the threshold, and migrating the data range from thefirst SSD to the second SSD.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 shows a plot in the prior art illustrating the correlationbetween the Over Provisioning and Write Amplification;

FIG. 2 shows a block diagram of a storage appliance having a pluralityof SSDs and a plurality of virtual disks according to one or moreembodiments;

FIG. 3 shows a block diagram illustrating a virtual mapping used in thestorage appliance according to one or more embodiments;

FIG. 4A shows a block diagram of various SSDs used to extract theutilization level of an SSD according to one or more embodiments;

FIG. 4B shows an extended Application Programming Interface (API) usedto extract the utilization level of an SSD according to one or moreembodiments;

FIG. 5 shows a block diagram illustrating the mechanism of OverProvisioning balancing across a pool of SSDs according to one or moreembodiments;

FIG. 6 shows a decision flow which balances the Over Provisioning acrossthe pool of SSD according to one or more embodiments;

FIG. 7 shows a decision flow showing the second phase of the balancingprotocol according to one or more embodiments; and

FIG. 8 shows a method for balancing a utilization parameter across thepool of SSDs according to one or more embodiments.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 2 shows a block diagram of a system 201 including a storageappliance 200 having a plurality of SSDs and a plurality of virtualdisks. The storage appliance 200 includes a plurality of SSDs 210-215, acontroller 222, a memory 221, and an adaptor 223. The system 201 furtherincludes a plurality of hosts 260-263, and a plurality of virtual disks231-235. The hosts 260-263 are connected to the storage appliance 200 bya switch 250.

For clarity, FIG. 2 is shown with six SSDs 210-215 and five virtualdisks 231-235. However, it is understood that the storage appliance 200may include any number of SSDs, and any number of virtual disks.Similarly, though FIG. 2 shows four hosts 260-263, the storage appliance200 may include any number of host devices. The terms SSD, SSD drive,and solid state device may be used interchangeably.

The controller 222 runs virtualization software which exposes theplurality of virtual disks 231-235 through the adapter 223 to theplurality of hosts 260-263. The SSDs 210-215 are used as back endstorage. The controller 222 is a local controller on the storageappliance 100, which may be any standard SSD storage appliance.

The adapter 223 provides the remote hosts 260-263 access to the storageappliance 200. Remote hosts with the appropriate connectivity can accessthe storage appliance 200 through the physical switch 250 and atransport protocol such as iSCSI, Fiber Channel (FC), NVME over Fabric,SCSI or any combination of transport protocol and physical connectivityvia driver software in the host. The adapter 223 may be an Ethernetport, Fiber Channel (FC) port, SAS, PCIe, InfiniBand (IB) port, or anyother appropriate port.

As a result, a remote host (e.g., one of hosts 260-263) is provided withthe virtual disks 231-235 which are exposed by the software in thecontroller 222. For example, host 260 is provided with virtual disk 231,and host 261 is provided with virtual disks 232 and 233. The hosts 260and 261 interact with storage appliance 200 having a plurality of SSDs210-215 through the switch 250, and adapter 223 according to thesoftware of the controller 222, but the hosts 260-263 “see” the virtualdisks 231-2135 on the appliance rather than the physical SSDs 210-215.Each host sees the virtual disks 231-235 as containing data, but thedata is actually stored and managed by the controller 222 on thephysical SSDs 210-215 in the storage appliance, accessible to the hosts260-263 through the switch 250 and adapter 223.

FIG. 3 shows a block diagram illustrating a virtual mapping scheme 300used in the storage appliance. FIG. 3 includes a first virtual disk 321with a first virtual mapping table 328, a second virtual disk 322 with asecond virtual mapping table 327, a first SSD 311, a second SSD 312, athird SSD 313, and a fourth SSD 314.

The virtual mapping scheme 300 illustrates a first virtualization schemeshown by the mapping of the first virtual disk 321 into the first SSD311 using the first mapping table 328, which uses one-to-one mapping ofthe virtual address onto a physical address space. The first virtualdisk 321 is mapped into a first physical range 331 in the first SSD 311.The data in the first virtual disk 321 is sized such that the data canbe placed consecutively in the first SSD 311. Additional data from thefirst virtual disk 321 or from other virtual disks can also be placedconsecutively in the first SSD 311 until the first SSD 311 has no morespace. The first virtual mapping table 328 stores mapping information,SSD identification, an indicator for a starting Logical Block Address(LBA) and length of the range of data placed in the first SSD 311.

In a second, more complex example, the virtual mapping scheme 300illustrates a virtual address space that points to multiple ranges overa plurality of physical devices. This is shown by the mapping of thesecond virtual disk 322 onto ranges in multiple SSDs, including thefirst SSD 311, the second SSD 312, the third SSD 313, and the fourth SSD314 according to the second mapping table 328. As can be seen, thesecond virtual disk 322 is located in range 332 in the first SSD 311,ranges 334 and 335 in the second SSD 312, range 335 in the third SSD 313and range 336 in the fourth SSD 314. The second mapping table 328 of thesecond virtual disk 321 is a Scatter Gather List (SGL) of the ranges inwhich the virtual disk data is stored, including their location, startLBA and length of the range.

The data from the second virtual disk 321 is mapped from virtual spaceinto physical space on multiple SSDs. The data from the second virtualdisk 321 is separated into ranges or chunks which are placed on multiplephysical SSDs in the storage appliance.

This second example including virtual disk data from the second virtualdisk 321 mapped to ranges on a variety of SSDs is more likely to beencountered if the data in the virtual disk is too large for the data tobe placed on a single physical SSD, the data may be split into chunks orranges and placed across multiple SSDs. Mapping of the second virtualdisk 321 onto multiple SSDs can also occur in a fragmented virtualaddress space, or in a storage appliance which has been in use for sometime. For example, after a storage appliance has been used for a timeand virtual disks have been created and deleted, multi-range mapping ofvirtual disks to physical SSD storage is required to distribute thevirtual disk data on the physical storage.

As data is stored on an SSD, the allocated portion of the SSD, as wellas the utilization level of the SSD, increases. When an SSD has a highutilization level, the effective OP may be minimized and the WA may behigh. And since WA is inversely correlated with SSD longevity, the SSDwith high utilization may have an increased risk of disk failure.

FIGS. 4A and 4B show memory representation of a SSD and an extended APIused to extract the utilization level of the SSD, respectively. FIG. 4Ashows a memory representation 401 of an SSD 400 and typical SSDparameters. The SSD 400 is composed of NAND pages, and typicallycontains utilized pages 422 containing data, bad blocks 420, and free ordirty NAND pages included in the effective OP 421. The bad blocks 420 isshown enlarged for clarity, but in most cases the bad blocks 420 willoccupy a much smaller portion of the SSD 400. The SSD 400 has a totalcapacity 410 as shown. However, only a portion of the total capacity 410of the SSD 400 is available for use by the host. The available portionof the SSD 400 to which data can be written is the exported capacity416. In order to enable the Flash Translation Layer (FTL) to store andefficiently write new data into erased pages (with low WA) and manageinvalidated data by performing GC independently in the background, aportion of the total capacity 410 is held as OP 415, or as spare space.

In contrast to an HDD, in which storage is maintained by a fixed mappingfrom logical to physical address space and physical locations may bere-written freely without first erasing previous data, an SSD containsNAND pages and not all physical addresses are mapped to a logicaladdress. In an SSD, the logical to physical mapping is not fixed, butrather the mapping changes as data is re-written. An SSD is utilizedwith the amount of data with which it is filled, and the SSD physicalpage addresses are only allocated when data is written to the SSD. Theamount of data written to the SSD is the utilization level, and theremaining portions of the SSD to which data has not been allocated andwritten to is the effective OP area. If the SSD is not fully utilized,the unallocated portions are much larger and the effective OP is muchhigher.

For example, in a 1 TB (Terabyte) storage disk, with 10% OP there willbe 100 GB (Gigabyte) of OP storage area unavailable to the user, and 900GB of storage available. The 900 GB of available storage may be exposedto the user. The 100 GB of OP area is kept as spare pages which allowthe SSD to execute GC protocols in the background or to accept new datawrite commands at the required or specified write data transfer speedsof the SSD. Although the user has access to 900 GB, if the user writesonly 400 GB of data to the disk, the effective OP area is the remaining500 GB of accessible storage space plus the 100 GB of reserved OP area.

The OP area provides the capability to the SSD to immediately overwritenew data into spare previously erased data blocks and pages in order toperform GC protocols in the background on the old data which has beeninvalidated by overwrites. Without OP, the GC protocols would have to beperformed synchronously with the overwriting of the data in order tomake erased page space to place the new data, thus slowing down thewrite performance of the SSD. Though the OP is typically determinedduring the manufacture of the SSD and is known, the effective OP of anSSD changes during the use of the SSD in writing data to the SSD,overwriting existing data and removing data (using so-called ‘Trim’commands specifically designed and defined for SSDs for de-allocatingLBAs which have been freed after data is erased in a host filesystem).The current effective OP of an SSD is not available to the user or tothe local controller in the storage appliance in conventional storagedevices, since the management of logical to physical address mapping andthe allocation and de-allocation of NAND flash pages remains within theprivate domain of the SSD's flash memory controller.

In an operational phase, the SSD 400 contains valid data pages, invalidor dirty data pages (such as data that has been overwritten or trimmed),and free pages. Dirty data pages may become available as free pagesafter GC processing is performed. Further, during operation, blocks ofdata may fail due to exceeding P/E cycle limits or other NAND failuremechanisms and become non-operational. These are denoted as bad blocks420 which increase over time with use of the storage appliance,degrading the total capacity of the storage disk.

OP in SSD 400 is defined as the ratio between unallocated or unutilizeddata pages and total available data pages of the SSD 400. In a scenariowhere the SSD is completely filled with data, i.e., to its exportedcapacity 416, and the unallocated data pages are the remaining sparepages 415. In such a scenario, assuming that there are no bad blocks inthe SSD 400, the OP is expressed as a ratio by the following equation(eq. 1).

$\begin{matrix}{{OP} = \frac{\left( {{{Total}\mspace{14mu} {Capacity}} - {{Exported}\mspace{14mu} {Capacity}}} \right)}{{Exported}\mspace{14mu} {Capacity}}} & \left( {{eq}.\mspace{14mu} 1} \right)\end{matrix}$

However, in most cases, the SSD 400 will not be entirely filled withdata to the total exported capacity 416. The user will actually utilize(utilized data 422) only a portion of the space available for writing onthe SSD 400 (the total capacity 410 less the bad blocks 420 or theexported capacity 416). Hence, a more realistic parameter of the SSD 400is the effective OP, expressed by the following equation (eq. 2).

$\begin{matrix}{{{Effective}\mspace{14mu} {OP}} = \frac{\left( {{{Total}\mspace{14mu} {Capacity}} - {{Utilized}\mspace{14mu} {Data}} - {{Bad}\mspace{14mu} {Blocks}}} \right)}{{Utilized}\mspace{14mu} {Data}}} & \left( {{eq}.\mspace{14mu} 2} \right)\end{matrix}$

As shown in equation 2, the effective OP 421 is determined by the totalcapacity 410 less the utilized data 422 and the bad blocks 420. When theeffective OP is low, the SSD is highly utilized and may be unstable andmore prone to failure. Information regarding the effective OP and theutilization of the SSD is not available to the user in conventionalstorage appliance. However, if the information were available, softwarein the storage appliance could take advantage of the information toprovide greater stability of the device and a longer operational life.

According to one embodiment of the invention, the SSD 400 provides anextended API that provides information on the SSD 400 in the form ofdata showing the amount of utilized data 422 and the number of badblocks 420. The API determines the utilization data information for theSSD 400, including the effective OP, and a host or client computer mayuse such data to balance the utilization of the SSDs in a storageappliance. Alternatively, or in addition, the host may provide theinformation to a user. By balancing the utilization across the SSDs, theoverall lifetime and operation of the storage device is improved as itlowers WA for devices which are over-utilized by a greater amount thanthe corresponding increase in WA for SSDs which are under-utilized.

In some implementations, the SSD 400 provides an extended API thatprovides information on the data utilization 431 for a specific range430 of address space of the SSD 400, as shown in FIG. 4B. For example,the user may provide a start LBA and a length, and the SSD returns, bythe API, the data utilization 431 of the provided range.

In some implementations, the range 430 is specified by a user. In someimplementations, the range 430 is specified by the manufacturer in theAPI.

OP is provided by the comparison of the utilized and available space onan SSD, for example as described by equations 1 and 2. The WA is aphenomenon in SSDs in which the actual amount of data that is physicallywritten to memory is greater than the amount of data intended to bewritten (the difference being due to the movement of valid data pagesfrom partially valid data blocks into new data blocks in order to makefully invalid data blocks which can then be erased, a process whichtakes place in GC operations). For example, if a user intends to write 1kB (kilobyte) of data to a disk and there is a WA of 10, the amount ofdata written to the disk may actually be 10 kB. The OP and WA arepredictive of the endurance and performance characteristics of thestorage disk. In the above example, the disk having a WA of 10 willreach its endurance limit 10× faster than a disk with a WA of 1, andwill have degraded performance approximately 10× slower than the diskwith a WA of 1. The derivation of WA from the effective OP is describedin full detail in the publication “An Improved Analytic Expression forWrite Amplification in NAND Flash,” by Luojie et al, arXiv: 1110.4245v1,incorporated by reference herein.

The WA is inversely proportional to the OP, and the relationship isnon-linear, as seen in prior art plot 100 shown in FIG. 1. A small OPcorrelates to a very high WA, while after the knee 108 at about 20% OP,the WA changes very little with increasing OP. Before the knee 108, atan effective OP of 5% for example, the WA is 11. After the knee 108, atan effective OP of 35%, the WA is 2. The effective OP of a disk has alarge effect on the WA of the disk, and as a result on the performance,stability, and endurance of the disk. At a higher effective OP, theendurance and performance of the disk is much better than at a lowereffective OP.

OP in an SSD is often minimized in order to lower the cost per availabledata storage unit to the customer. However, vendors provide a warrantyfor the operational time period and optimize the OP so the product willnot fail before the warranted operational time period.

The warranty for the operational time period can be approximated basedon the WA and a Disk Write per Day (DWPD) correlating to the P/E count.An SSD with a lower effective OP due to high utilization or bad blocksmay reach its endurance limit before other SSDs and may fail earlier.Hence, the minimization of OP to lower the cost to the customer mayadversely affect the lifetime of the product and may actually lead tohigher costs to the consumer or vendor.

In order to maximize an operational lifetime of a storage appliance, theOP of the SSD can be optimized during the operational life of the SSD,and should be chosen at each point in time in order to provideoptimization of SSD resources. For example, the knee value 108, or othervalue of OP, may be chosen as a threshold value which the effective OPshould be maintained above in order to keep the WA low. In someimplementations, the threshold value is used as an alarm notifying theFTL that the amount of spare space in the SSD is approaching a minimumthat may bring the SSD to non-functional or Read Only state.

While there may be limited scope for the FTL in a controller of a singleSSD to adjust the OP when the OP value reduces and approaches the kneevalue 108 as the SSD storage becomes more utilized, in a storageappliance where there are multiple individual SSDs managed by a storageappliance controller, there may be more flexibility to adjust andbalance the OPs of the individual SSDs by migrating data between SSDs.In some embodiments, the storage appliance controller accesses the OP,bad blocks, and data mapping information using an extended API providedby the SSDs. Using this information, the controller may migrate datafrom one SSD to another and thereby modify the effective OPs of thesource and destination SSDs.

In some embodiments, the threshold value can be a single thresholdvalue. In some implementations, the threshold value can be multiplethresholds. In some implementations, the threshold value may be anyother OP-related threshold. In some implementations, when the OP exceedsa threshold value in a particular SSD, the controller of the storageappliance executes a balancing protocol to bring the OP of the SSD backwithin the threshold value to optimize the operation of the SSD and toprevent failure. In some implementations, the threshold value is aneffective OP that corresponds to a target WA of 2 or 3, for example aneffective OP of 20-40%. At a WA of 2 or 3, the endurance is dramaticallylowered and the performance of the SSD is increased compared to a higherWA.

FIG. 5 shows a block diagram 500 of the OP balance across a pool of SSDsillustrating the balancing protocol defined by the controller's extendedAPI. The block diagram includes a first SSD 510, a second SSD 511, athird SSD 512, and a fourth SSD 513. The first SSD 510 includes a firstrange 530 including data written from a virtual disk, and a second range531 also including data written from the same or different virtual disk.The first SSD 510 also has a first effective OP 520, indicated by thevertical height of the arrow. The first effective OP can be determinedby the controller (such as controller 222 in FIG. 2) as will beexplained below. Similarly, the second SSD 511 has a second effective OP521, the third SSD 512 has a third effective OP 522, and the fourth SSDhas a fourth effective OP 523, each indicated by the vertical height ofeach respective arrow, and which are likewise determined by thecontroller.

As described above, the effective OP is related to the utilization ofthe SSD and is predictive of the endurance and performance of the SSD.An SSD with a very low effective OP will be closer to its endurancelimit and have poor performance compared to an SSD with a highereffective OP. By balancing the utilization across the SSDs in an SSDpool, the storage appliance has better performance overall and thechance of failure of an SSD is decreased. The effective OP of each ofthe SSDs in FIG. 5 are not in balance, as indicated by the verticalarrows of varying heights. By using an extended API on the controller todetermine the utilization of each SSD and to balance the SSDs accordingto a predetermined selection heuristic, the performance and stability ofthe storage appliance can be optimized.

The controller (e.g., controller 222 of FIG. 2) determines the effectiveOP for each SSD as a measure of the utilization of the SSD. Thecontroller determines the utilization of each SSD from the mapping tableby querying the utilization between two LBA values in the table. Thecontroller has access to the mapping table and can determine autilization level or effective OP by querying the mapping table todetermine which LBAs on each SSD have been written to and which havenot. The controller can query the mapping table to determine theutilization of an SSD or a portion of the SSD. The utilization level orthe effective OP can also be calculated according to equation 2 as theratio between the utilized space on the first SSD to the total availablespace.

When a particular SSD's effective OP is below a threshold, thecontroller performs a check for available space in another SSD. If thecontroller identifies an SSD which has available space, the controllermigrates a range of LBAs to the new SSD with enough available (i.e.unallocated) space. For example, if the controller determines that thefirst effective OP 520 is below a threshold value, the controller checksthe utilization of the remaining SSDs, second SSD 511, third SSD 512,and fourth SSD 513, to determine if any of the SSDs have availablespace. The controller determines, in this example, that the third SSD512 has sufficient available space for the second range 531, and thatthe third SSD 512 has an effective OP which is above the threshold. Thecontroller then migrates the second range 531 from the first SSD 510 tothe third SSD 512. The effective OP 520 of the first SSD 510 shouldincrease following the migration of the second range 531 from the firstSSD to the resources of the third SSD 512.

The controller may determine the destination SSD to which the data canbe migrated by accessing the virtual mapping table. The extended API inthe controller can access the mapping table and can extract the mappingsof the LBA to the physical pages in the SSD. Using this information, theextended API calculates how many regions or pages of the SSD are mappedto a virtual space and how many are not currently mapped to a virtualspace (and are therefore unallocated and available). The controller canthus determine the utilization of various regions of the potentialdestination SSDs.

Although the example in FIG. 5 illustrates the migration of a singlerange (second range 531) from the first SSD 510 to the third SSD 512, inother implementations, the controller can migrate multiple ranges fromthe SSD to multiple other SSDs. The controller can also migrate a singlerange, such as second range 531, to multiple target ranges acrossvarious SSDs by splitting the single range into multiple smaller rangesto be placed on other SSDs.

The range to be migrated may be chosen by the controller via parametersof the extended API for range utilization. The controller calculates theamount of utilized data which must be transferred from the first SSD 510in order to bring the effective OP 520 over the threshold. Thecontroller then chooses at least one data range which satisfies therequired data mount. In some implementations, if multiple data ranges onthe first SSD 510 satisfy the required data amount, the controllerchooses to migrate the smallest range that satisfies the requirement inorder to minimize any migration penalties. In some implementations, ifmultiple data ranges on the first SSD 510 satisfy the required dataamount, the controller chooses the least accessed range that satisfiesthe requirement. In some implementations, if multiple data ranges on thefirst SSD 510 satisfy the required data amount, the controller choosesthe most accessed range that satisfies the requirement.

The controller performs the balancing protocol such that the pool ofSSDs is evenly endured and the SSDs are operational with low WA toincrease the longevity of the SSDs and decrease the likelihood offailure. The controller performs the balancing protocol in order toevenly distribute the effective OP across the SSD pool, bypre-calculating the end result OP of the SSDs after migration andchoosing an optimum location on an SSD to place the migrated range orranges across the remaining SSDs. In some implementations, theoptimizing is based on minimizing the standard deviation of thepost-migration OPs. In some implementations, if the controllerdetermines that the number of bad blocks or writing errors in aparticular SSD has increased beyond a threshold, the controller may stopwriting data to the SSD and rebalance the remaining data from the SSD tothe remaining SSDs. In situations in which the SSD is full, such as whenthe amount of bad blocks in an SSD is such that the SSD is preventedfrom operating, the balancing protocol performed by the controllerprevents the SSD from failing by utilizing available space on other SSDsin the device.

The SSD pool balancing protocol using migration of data ranges tooptimize and equalize the OP across the SSD pool uses detailed datautilization information provided to the controller via the extended API.As discussed above, the data utilization information can be determinedper SSD or even more detailed data utilization information can bedetermined per virtual mapping range on an SSD.

In some implementations, in addition to performing pool balancingprotocol on existing data on the physical SSDs, the controller will notmap virtual disks onto an SSD such that the operational effective OPthreshold is violated. In this manner, the devices are always maintainedin an operational state, even when bad blocks accumulate due toendurance or die failure.

The logic for the controller can vary with different cases ofimplementation such that the utilization of the SSDs is balanced toincrease the performance of the storage appliance. Controllers may haveextended APIs which use the principles discussed above in order tooptimize performance, endurance or exported capacity. In someimplementations, the controller may have an extended API that providesinformation related to the utilization of the SSDs to an external userwithout actually moving the data between SSDs.

FIG. 6 shows a decision flow 600 for controlling the balancing of the OPacross the pool of SSDs. The decision flow 600 may be used by thecontroller (such as controller 222 in FIG. 2) to balance the effectiveOP in a pool of SSDs.

At step 602, the controller is triggered to execute the balancingprotocol every pre-defined time period, for example every hour or once aday. The controller may detect a time-based trigger or be triggered bythe occurrence of an event. In some implementations the time period inwhich the balancing protocol is triggered is specified by themanufacturer. In some implementations, the time period in which thebalancing protocol is triggered is specified by the user. In someimplementations, the balancing protocol is triggered by a pre-definedtime period and is additionally triggered by an event, such as a commandby a user.

In step 604, after the balancing protocol trigger has been triggered,the controller checks the SSDs to retrieve the effective OP level ofeach SSD. The controller may use the extended API to determine theeffective OP by accessing the mapping table and determining from theLBAs in the mapping table the utilization for a section of the SSDbetween a first and a second LBA for each SSD. In some implementations,the controller determines the effective OP by using equation 2,calculating the effective OP of the SSD from the utilization and theamount of bad blocks on the SSD in relation to the total capacity of theSSD.

In some implementations, the controller retrieves a different parameterrelated to the utilization of the SSD, or related to the utilization ofa portion of the SSD. In step 606, the controller compares the effectiveOP level of each SSD to a stored threshold value and determines if thereare any SSDs with an effective OP level which does not meet thethreshold value. The threshold value is a predetermined effective OPvalue which is set by the manufacturer. In some implementations, thethreshold value is at or below the “knee” value of WA versus OP, asshown in FIG. 1, for example about 15%.

If there are no SSDs with an effective OP level below the thresholdvalue, the controller does not perform any balancing of the SSDs, andthe controller waits for the next balancing protocol trigger on path607. If the controller determines that there are SSDs which have aneffective OP level below the threshold value, all such identified SSDsare subject to balancing.

For example, referring to the diagram in FIG. 5, the controller willhave determined the first effective OP 520, the second effective OP 521,the third effective OP 522, and the fourth effective OP 524, and willhave determined that the first SSD 510 has an effective OP lower thanthe threshold value.

In step 608 of FIG. 6, the controller determines an order in which tobalance the OP levels of the SSDs which have an effective OP level belowthe threshold value. In some implementations, the controller orders theSSDs by the effective OP and determines that an SSD with a minimumeffective OP value will be balanced first. In some implementations, thecontroller orders the SSDs by the effective OP and determines an orderfor balancing based on another parameter such as the access rate of thedata on the SSDs. In some implementations, the controller orders theSSDs by the effective OP and selects the SSD with the minimum effectiveOP for balancing, and disregards the order of the remaining SSDs. Insome implementations, the controller orders the SSDs and selects the SSDwith the minimum effective OP, but also records the order of theremaining SSDs which are not selected for balancing after the balancingof the minimum effective OP list.

For example, again referring to FIG. 5, the controller determines thatthe third SSD 512 can accept a portion of the data of the first SSD 510,while maintaining an effective OP within the threshold value after themigration.

At step 610 of FIG. 6, the controller determines if there is a SSD thatcan accommodate additional utilization while remaining within theeffective OP threshold. The controller determines which of the SSD canhave additional utilization and chooses one of the determined SSDs asthe destination SSD for the balancing protocol. The controller maypre-calculate the effective OP value for each possible destination SSDafter migration in order to determine a destination SSD. Pre-calculatingthe effective OP may be desirable since migration of a data rangeincreases the utilization of the SSD. The controller may choose thedestination SSD based on various parameters, for example, such aschoosing the SSD with the highest effective OP, choosing the firstidentified SSD which can accommodate additional utilization, randomlyselecting an SSD from a set of SSDs having an effective OP within arange which includes the highest effective OP, or selecting an SSD whichis the least recently accessed SSD from the set of SSDs having aneffective OP within a range which includes the highest effective OP, andthe like.

If there is no SSD that can accommodate additional utilization whilemaintaining an effective OP above the threshold value, the controllermoves to a second phase of the balancing protocol along path 611 tobegin the process described in FIG. 7.

FIG. 7 shows a decision flow 700 for situations in which there is nosingle destination SSD that can accommodate the additional utilizationand maintain an effecting OP which exceeds the threshold value. Thedecision flow 700 begins at step 702 after the controller has initiatedthe second phase of the protocol on path 611 from FIG. 6. At step 704,the controller determines if there are any SSDs with an effective OPwhich exceeds the threshold. If there are no SSDs with an effective OPexceeding the threshold, the controller ends the program at step 706 andreturns to a waiting state. If there are SSDs with an effective OP whichexceeds the threshold, the controller moves to step 708. At step 708,the controller orders the SSDs by the effective OP and selects a targetSSD that has the maximum OP. At step 710, the controller determines thesize or amount of data that can be migrated to the target SSD whilestill maintaining the effective OP of the target SSD above the thresholdvalue. At step 712, the controller migrates the determined amount to thetarget SSD.

At step 714, the controller determines if the effective OP of the sourceSSD remains below the threshold. If the effective OP of the source SSDnow exceeds the threshold, the controller ends the program at step 716.If the effective OP of the source SSD remains below the threshold value,the controller returns along pathway 718 to repeat the program beginningwith the determination at step 704 as to whether there are any SSDs withan effective OP greater than the threshold. The controller may iteratethrough the SSDs in the pool according to the flow 700 to distribute theremaining additional utilization amongst the SSDs in the pool such thatthe destination SSDs and the source SSD end the process with effectiveOPs which exceed the threshold value.

Referring again to FIG. 6, alternatively, if the controller determinesat step 610 in FIG. 6 that there is no single destination SSD that canaccommodate the additional utilization, the controller may still choosea destination SSD with a higher effective OP that the source SSD andmigrates an amount of data calculated to bring the effective OP of bothsource and destination SSDs to an equal value. In an alternativeembodiment, if there is no SSD that can accommodate additionalutilization while maintaining an effective OP above the threshold value,the controller ends the balancing protocol and returns to a waitingstate.

If, in step 610 of FIG. 6, the controller determines that there is a SSDthat can accommodate additional utilization, the controller moves on tostep 612 in FIG. 6. After the selection of the source SSD anddestination SSD, the controller determines which data to migrate fromthe source SSD to the destination SSD. At step 612, the controllerdetermines a data range in the source SSD that will bring the effectiveOP within the threshold. The controller determines on the source SSD oneor more data ranges which have a high utilization and are sized suchthat migrating the data ranges from the source SSD will bring theeffective OP within the threshold value. If more than one appropriatedata range is identified, the controller determines which data rangewill be migrated according to the parameters specified in the API.

The controller may determine the appropriate data ranges on the sourceSSD by determining the utilization for various data ranges using themapping table. For example, the controller accesses the mapping tableand can determine from the LBAs in the mapping table how many are mappedto each SSD.

A selection heuristic can be chosen such that the controller willdetermine the data range or segment with the smallest capacity andhighest utilization in order to have the smallest migration penalty andthe highest impact. However, in some implementations other selectionheuristics may be preferred. Any data range that will satisfy thethreshold value requirements for the effective OP for both the sourceand destination SSDs can be selected. In some implementations, thecontroller may determine which data range will be migrated based on theaccess rate of the data range on the source SSD or the available spaceon the destination SSD.

In some implementations, the controller can split a single source datarange into multiple smaller data ranges to be placed on multipledestination SSDs. In some implementations, the controller may do so inorder to more evenly balance the OP across the SSD pool. In someimplementations, the controller may do so if no single destination SSDcan accept the full source data range while maintaining an effective OPwithin the required threshold value.

At step 614, the controller migrates the identified data range from thesource SSD to the destination SSD. The migration of the data range fromthe source SSD to the destination SSD should balance the SSDs such thatboth the source and destination SSDs have effective OP which satisfiesthe threshold value. The controller may determine before migrating thedata that there is an acceptable portion of the destination SSD on whichthe data can be placed. The controller may then update the mappingtables to reflect the migrated data.

After the data range has been migrated from the source SSD to thedestination SSD, the controller may cycle through any remainingidentified SSDs which need to be balanced, performing the same steps.The migration of data ranges to balance the effective OP across the SSDsis continued until all SSDs in the pool have an effective OP above thethreshold value or until migration of data is no longer feasible.

Alternatively, the controller may, at step 604, determine the effectiveOP for one SSD at a time, such that the controller begins the balancingprotocol as soon as an SSD is identified with an effective OP below thethreshold rather than determining the effective OP for all SSDs at step604 and bypassing step 608.

As a further alternative, the controller may, at step 610, optimallyselect multiple destinations and the sizes of data chunks to eachdestination, such that the effective OPs of all SSDs after migrationhave the minimum standard deviation while maintaining an effective OPless than the threshold value for each SSD.

FIG. 8 shows a method 800 for balancing a utilization parameter across apool of SSDs. The method 800 shows an operational flow by which thecontroller (such as controller 222 in FIG. 2) identifies an appropriatedestination drive for the balancing protocol.

In step 802, a first utilization parameter of a first SSD and a Secondutilization parameter of the second SSD are calculated. The firstutilization parameter of the first SSD is lower than a first thresholdvalue. The first utilization parameter and second utilization parametermay be a measure of the effective over-provisioning, or any othersuitable parameter related to the utilization of the SSDs.

In step 804, the second utilization parameter is compared to the firstthreshold value. If the second utilization parameter is less than thefirst threshold value, the method progresses to step 806 where a thirdSSD is identified and a third utilization parameter is calculated forthe third SSD. The third utilization parameter is then compared to thefirst threshold value at step 804, and the method proceeds.

If the second utilization parameter is greater than the first thresholdvalue at step 804, the method proceeds to step 808. At step 808, a datarange of data is identified on the first SSD to be removed. The datarange is identified such that the removal of the data in the data rangefrom the first SSD will bring the utilization parameter associated withthe first SSD within the first threshold. At step 810, a fourthutilization parameter is calculated for the second SSD including thedata from the identified data ranger of the first SSD. At step 812, afifth utilization parameter is calculated for the first SSD whichexcludes the data in the identified data range of the first SSD. Steps810 and 812 enable the controller to calculate the utilization of thefirst SSD and the second SSD after the migration of data from the firstSSD to the second SSD. By pre-calculating the utilization parameters ofthe two SSDs, the controller can determine if the chosen destination SSDis acceptable and can optimize the migration of data and the balancingof utilization across available SSDs.

At step 814, a standard deviation of a plurality of utilizationparameters across a plurality of available SSDs is calculated, includingthe fourth utilization parameter and the fifth utilization parameter.The calculation of the standard deviation enables the controller todetermine what the balance of utilization across the plurality ofavailable SSDs after the migration of data from the first SSD to thesecond SSD. At step 816, the standard deviation is compared to a secondthreshold value. If the standard deviation is greater than the secondthreshold value, the method returns to step 806 and a new destinationSSD is determined. If the standard deviation is less than the secondthreshold, the method proceeds to step 818 and the data corresponding tothe data range from the first SSD is migrated to the second SSD.

In some implementations, if the standard deviation is greater than thesecond threshold at step 816, instead of returning the method to step806 to determine a new destination SSD, a utilization parameter of thesecond SSD including a portion of the data from the identified datarange may be calculated and a second destination SSD is selected as adestination for the remaining portion of the data from the identifieddata range. The standard deviation can then be re-calculated todetermine if the utilization is balanced when a portion of the data inthe data range is spread between the two destination SSDs. In someimplementations, the method may determine more than two destination SSDsfor the data corresponding to the identified data range of the firstSSD.

Calculating the standard deviation of the utilization parameters of theplurality of the SSDs in the pool of SSDs enables the controller tooptimize the utilization across the pool of SSDs. An optimal balance ofutilization across the pool of SSDs increases the longevity of thedevice and minimizes the risk of SSD or device failure.

Other objects, advantages and embodiments of the various aspects of thepresent invention will be apparent to those who are skilled in the fieldof the invention and are within the scope of the description and theaccompanying Figures. For example, but without limitation, structural orfunctional elements might be rearranged consistent with the presentinvention. Similarly, principles according to the present inventioncould be applied to other examples, which, even if not specificallydescribed here in detail, would nevertheless be within the scope of thepresent invention.

What is claimed is:
 1. A storage appliance comprising: a first solidstate drive (SSD) and a second SSD, each configured to store data; and acontroller configured to: calculate a value of a first utilizationparameter of the first SSD and determine if the value satisfies athreshold, identify a data range of data stored on the first SSD to beremoved, and increase spare area in the first SSD by migrating the datacorresponding to the identified data range from the first SSD to thesecond SSD, wherein the migrating of the data causes the value of firstutilization parameter to change and satisfy the threshold.
 2. Thestorage appliance of claim 1, wherein, the first utilization parameteris a first effective over provisioning parameter.
 3. The storageappliance of claim 1, the controller further configured to: calculate autilization parameter for each of one or more additional SSDs includingthe second SSD; and select one or more of the additional SSDs to whichto migrate the data corresponding to the identified data range from thefirst SSD, based on the calculated utilization parameter for each of theone or more additional SSDs.
 4. The storage appliance of claim 3, thecontroller is further configured to: determine, based on the calculatedutilization parameter for the second SSD, a first amount of data thesecond SSD can accept; migrate the determined first amount of data tothe second SSD; determine, based on the calculated utilization parameterof a third SSD of the one or more additional SSDs, a second amount ofdata that the third SSD can accept, wherein a sum of the first amount ofdata and the second amount of data is less than or equal to an amount ofthe data of the identified data range; and migrate the determined secondamount of data to the third SSD.
 5. The storage appliance of claim 4,wherein the controller is further configured to: calculate a secondutilization parameter of the first SSD excluding the data correspondingto the identified data range; calculate a revised utilization parameterfor the second SSD including the first amount of data and the third SSDincluding the second amount of data; and calculate a standard deviationof the utilization parameters of each of the one or more additionalSSDs, including the second utilization parameter and the revisedutilization parameters.
 6. The storage appliance of claim 5, wherein ifthe standard deviation is below a predetermined value, the controller isconfigured to: migrate the data corresponding to the first amount ofdata from the first SSD to the second SSD and the data corresponding tothe second amount of data from the first SSD to the third SSD.
 7. Thestorage appliance of claim 1, further comprising an adapter configuredto allow a host exposing a virtual disk to communicate data to the firstSSD and one or more additional SSDs including the second SSD.
 8. Thestorage appliance of claim 1, further comprising a mapping tableconfigured to record a location of the stored data.
 9. The storageappliance of claim 8, wherein the controller is further configured todetermine, using the mapping table, the location of the datacorresponding to the identified data range to be removed from the firstSSD.
 10. The storage appliance of claim 9, wherein the controller isfurther configured to calculate the value of the first utilizationparameter by querying the mapping table.
 11. The storage appliance ofclaim 10, wherein the controller is configured to update the mappingtable with one or more new locations of the data corresponding to theidentified data range migrated from the first SSD to one or moreadditional SSDs including the second SSD.
 12. The storage appliance ofclaim 1, wherein the controller is configured to migrate the datacorresponding to the identified data range from the first SSD to one ormore unutilized regions of one or more additional SSDs including thesecond SSD.
 13. The storage appliance of claim 1, wherein the controlleris configured to migrate the data corresponding to the identified datarange from the first SSD to two or more unutilized regions of the secondSSD.
 14. The storage appliance of claim 1, wherein the controller isconfigured to determine a smallest data range of data which can bemigrated from the first SSD to cause the value of the first utilizationparameter to satisfy the threshold.
 15. A method of balancing theutilization among a plurality of solid state drives (SSDs) in a storageappliance, the method comprising: calculating, at a controller, a valueof a first utilization parameter of a first SSD; determining if thevalue satisfies a threshold; identifying a data range of data stored onthe first SSD to be removed; and increasing spare area in the first SSDby migrating the data corresponding to the identified data range fromthe first SSD to a second SSD; wherein the migrating of the data causesthe value of the first utilization parameter to change and satisfy thethreshold.
 16. The method of claim 15, wherein calculating the value ofthe first utilization parameter comprises calculating an effective overprovisioning parameter.
 17. The method of claim 16, wherein calculatingthe value of the first utilization parameter comprises consulting amapping table to determine utilization between a first logical blockaddressing (LBA) and a second LBA corresponding to the first SSD. 18.The method of claim 17, further comprising calculating a utilizationparameter for each of one or more additional SSDs including the secondSSD; and selecting one or more of the additional SSDs to which tomigrate the data corresponding to the identified data range from thefirst SSD, based on the calculated utilization parameters for each ofthe one or more additional SSDs.
 19. The method of claim 18, the methodfurther comprising: comparing the calculated utilization parameter foreach of the one or more additional SSDs to the threshold; determining asubset of SSDs from the one or more additional SSDs for which thecalculated utilization parameter satisfies the threshold; and selecting,from the subset of SSDs, an SSD with a minimum utilization parameter.20. The method of claim 19, further comprising determining if a value ofthe utilization parameter of the SSD with the minimum utilizationparameter will satisfy the threshold after receiving the datacorresponding to the identified data range.